package org.finesys.codegen.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.finesys.common.mp.core.annotation.QueryIgnore;
import org.finesys.common.mp.core.base.BaseEntity;

import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Data
public class GenTable extends BaseEntity {

    /**
     * id
     */
    @TableId(type = IdType.ASSIGN_ID)
    @Schema(description = "主键")
    private Long tableId;

    /**
     * 表名称
     */
    private String tableName;

    /**
     * 表描述
     */
    private String tableComment;

    /**
     * 实体类名称(首字母大写)
     */
    private String className;
    /**
     * 数据源名称（存储ID不可以，当为默认数据源时，不存在，无法识别）
     */
    private String dsName;


    /**
     * 生成包路径
     */
    private String packageName;

    /**
     * 生成业务名
     */
    private String businessName;
    /**
     * 生成模块名
     */
    private String moduleName;


    /**
     * 生成功能名
     */
    private String functionName;

    /**
     * 生成作者
     */
    private String functionAuthor;

    /**
     * 邮箱
     */
    private String email;
    /**
     * 项目版本号
     */
    private String version;

    /**
     * 使用的模板（crud单表操作 tree树表操作）
     */
    private String tplCategory;
    /**
     * 使用模板方式 0:vue2 1:vue3 2:html
     */
    private String tplType;
    /**
     * 其它生成选项
     */
    private String options;

    /**
     * 表单布局-分栏
     */
    @QueryIgnore
    private int formCols;

    /**
     * 生成代码方式（0zip压缩包 1自定义路径）
     */
    private String genWay;
    /**
     * 前端生成路径（不填默认项目路径）
     */
    private String frontendPath;
    /**
     * 后端生成路径（不填默认项目路径）
     */
    private String backendPath;
    /**
     * 关联子表的表名
     */
    private String subTableName;

    /**
     * 关联子表的外键名
     */
    private String subTableFkName;
    /**
     * 子表
     */
    @TableField(exist = false)
    private GenTable subTable;

    @TableField(exist = false)
    private GenTableColumn primaryKeyColumn;

    /**
     * 字段列表
     */
    @TableField(exist = false)
    private List<GenTableColumn> columnList;

    /**
     * 代码风格（模版分组信息）
     */
    @TableField(exist = false)
    private List<GenGroup> groupList;
}
